<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>存储管理(git)</title><style>
/* cspell:disable-file */
/* webkit printing magic: print all background colors */
html {
	-webkit-print-color-adjust: exact;
}
* {
	box-sizing: border-box;
	-webkit-print-color-adjust: exact;
}

html,
body {
	margin: 0;
	padding: 0;
}
@media only screen {
	body {
		margin: 2em auto;
		max-width: 900px;
		color: rgb(55, 53, 47);
	}
}

body {
	line-height: 1.5;
	white-space: pre-wrap;
}

a,
a.visited {
	color: inherit;
	text-decoration: underline;
}

.pdf-relative-link-path {
	font-size: 80%;
	color: #444;
}

h1,
h2,
h3 {
	letter-spacing: -0.01em;
	line-height: 1.2;
	font-weight: 600;
	margin-bottom: 0;
}

.page-title {
	font-size: 2.5rem;
	font-weight: 700;
	margin-top: 0;
	margin-bottom: 0.75em;
}

h1 {
	font-size: 1.875rem;
	margin-top: 1.875rem;
}

h2 {
	font-size: 1.5rem;
	margin-top: 1.5rem;
}

h3 {
	font-size: 1.25rem;
	margin-top: 1.25rem;
}

.source {
	border: 1px solid #ddd;
	border-radius: 3px;
	padding: 1.5em;
	word-break: break-all;
}

.callout {
	border-radius: 3px;
	padding: 1rem;
}

figure {
	margin: 1.25em 0;
	page-break-inside: avoid;
}

figcaption {
	opacity: 0.5;
	font-size: 85%;
	margin-top: 0.5em;
}

mark {
	background-color: transparent;
}

.indented {
	padding-left: 1.5em;
}

hr {
	background: transparent;
	display: block;
	width: 100%;
	height: 1px;
	visibility: visible;
	border: none;
	border-bottom: 1px solid rgba(55, 53, 47, 0.09);
}

img {
	max-width: 100%;
}

@media only print {
	img {
		max-height: 100vh;
		object-fit: contain;
	}
}

@page {
	margin: 1in;
}

.collection-content {
	font-size: 0.875rem;
}

.column-list {
	display: flex;
	justify-content: space-between;
}

.column {
	padding: 0 1em;
}

.column:first-child {
	padding-left: 0;
}

.column:last-child {
	padding-right: 0;
}

.table_of_contents-item {
	display: block;
	font-size: 0.875rem;
	line-height: 1.3;
	padding: 0.125rem;
}

.table_of_contents-indent-1 {
	margin-left: 1.5rem;
}

.table_of_contents-indent-2 {
	margin-left: 3rem;
}

.table_of_contents-indent-3 {
	margin-left: 4.5rem;
}

.table_of_contents-link {
	text-decoration: none;
	opacity: 0.7;
	border-bottom: 1px solid rgba(55, 53, 47, 0.18);
}

table,
th,
td {
	border: 1px solid rgba(55, 53, 47, 0.09);
	border-collapse: collapse;
}

table {
	border-left: none;
	border-right: none;
}

th,
td {
	font-weight: normal;
	padding: 0.25em 0.5em;
	line-height: 1.5;
	min-height: 1.5em;
	text-align: left;
}

th {
	color: rgba(55, 53, 47, 0.6);
}

ol,
ul {
	margin: 0;
	margin-block-start: 0.6em;
	margin-block-end: 0.6em;
}

li > ol:first-child,
li > ul:first-child {
	margin-block-start: 0.6em;
}

ul > li {
	list-style: disc;
}

ul.to-do-list {
	padding-inline-start: 0;
}

ul.to-do-list > li {
	list-style: none;
}

.to-do-children-checked {
	text-decoration: line-through;
	opacity: 0.375;
}

ul.toggle > li {
	list-style: none;
}

ul {
	padding-inline-start: 1.7em;
}

ul > li {
	padding-left: 0.1em;
}

ol {
	padding-inline-start: 1.6em;
}

ol > li {
	padding-left: 0.2em;
}

.mono ol {
	padding-inline-start: 2em;
}

.mono ol > li {
	text-indent: -0.4em;
}

.toggle {
	padding-inline-start: 0em;
	list-style-type: none;
}

/* Indent toggle children */
.toggle > li > details {
	padding-left: 1.7em;
}

.toggle > li > details > summary {
	margin-left: -1.1em;
}

.selected-value {
	display: inline-block;
	padding: 0 0.5em;
	background: rgba(206, 205, 202, 0.5);
	border-radius: 3px;
	margin-right: 0.5em;
	margin-top: 0.3em;
	margin-bottom: 0.3em;
	white-space: nowrap;
}

.collection-title {
	display: inline-block;
	margin-right: 1em;
}

.simple-table {
	margin-top: 1em;
	font-size: 0.875rem;
	empty-cells: show;
}
.simple-table td {
	height: 29px;
	min-width: 120px;
}

.simple-table th {
	height: 29px;
	min-width: 120px;
}

.simple-table-header-color {
	background: rgb(247, 246, 243);
	color: black;
}
.simple-table-header {
	font-weight: 500;
}

time {
	opacity: 0.5;
}

.icon {
	display: inline-block;
	max-width: 1.2em;
	max-height: 1.2em;
	text-decoration: none;
	vertical-align: text-bottom;
	margin-right: 0.5em;
}

img.icon {
	border-radius: 3px;
}

.user-icon {
	width: 1.5em;
	height: 1.5em;
	border-radius: 100%;
	margin-right: 0.5rem;
}

.user-icon-inner {
	font-size: 0.8em;
}

.text-icon {
	border: 1px solid #000;
	text-align: center;
}

.page-cover-image {
	display: block;
	object-fit: cover;
	width: 100%;
	max-height: 30vh;
}

.page-header-icon {
	font-size: 3rem;
	margin-bottom: 1rem;
}

.page-header-icon-with-cover {
	margin-top: -0.72em;
	margin-left: 0.07em;
}

.page-header-icon img {
	border-radius: 3px;
}

.link-to-page {
	margin: 1em 0;
	padding: 0;
	border: none;
	font-weight: 500;
}

p > .user {
	opacity: 0.5;
}

td > .user,
td > time {
	white-space: nowrap;
}

input[type="checkbox"] {
	transform: scale(1.5);
	margin-right: 0.6em;
	vertical-align: middle;
}

p {
	margin-top: 0.5em;
	margin-bottom: 0.5em;
}

.image {
	border: none;
	margin: 1.5em 0;
	padding: 0;
	border-radius: 0;
	text-align: center;
}

.code,
code {
	background: rgba(135, 131, 120, 0.15);
	border-radius: 3px;
	padding: 0.2em 0.4em;
	border-radius: 3px;
	font-size: 85%;
	tab-size: 2;
}

code {
	color: #eb5757;
}

.code {
	padding: 1.5em 1em;
}

.code-wrap {
	white-space: pre-wrap;
	word-break: break-all;
}

.code > code {
	background: none;
	padding: 0;
	font-size: 100%;
	color: inherit;
}

blockquote {
	font-size: 1.25em;
	margin: 1em 0;
	padding-left: 1em;
	border-left: 3px solid rgb(55, 53, 47);
}

.bookmark {
	text-decoration: none;
	max-height: 8em;
	padding: 0;
	display: flex;
	width: 100%;
	align-items: stretch;
}

.bookmark-title {
	font-size: 0.85em;
	overflow: hidden;
	text-overflow: ellipsis;
	height: 1.75em;
	white-space: nowrap;
}

.bookmark-text {
	display: flex;
	flex-direction: column;
}

.bookmark-info {
	flex: 4 1 180px;
	padding: 12px 14px 14px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
}

.bookmark-image {
	width: 33%;
	flex: 1 1 180px;
	display: block;
	position: relative;
	object-fit: cover;
	border-radius: 1px;
}

.bookmark-description {
	color: rgba(55, 53, 47, 0.6);
	font-size: 0.75em;
	overflow: hidden;
	max-height: 4.5em;
	word-break: break-word;
}

.bookmark-href {
	font-size: 0.75em;
	margin-top: 0.25em;
}

.sans { font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol"; }
.code { font-family: "SFMono-Regular", Menlo, Consolas, "PT Mono", "Liberation Mono", Courier, monospace; }
.serif { font-family: Lyon-Text, Georgia, ui-serif, serif; }
.mono { font-family: iawriter-mono, Nitti, Menlo, Courier, monospace; }
.pdf .sans { font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol", 'Twemoji', 'Noto Color Emoji', 'Noto Sans CJK JP'; }
.pdf:lang(zh-CN) .sans { font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol", 'Twemoji', 'Noto Color Emoji', 'Noto Sans CJK SC'; }
.pdf:lang(zh-TW) .sans { font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol", 'Twemoji', 'Noto Color Emoji', 'Noto Sans CJK TC'; }
.pdf:lang(ko-KR) .sans { font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol", 'Twemoji', 'Noto Color Emoji', 'Noto Sans CJK KR'; }
.pdf .code { font-family: Source Code Pro, "SFMono-Regular", Menlo, Consolas, "PT Mono", "Liberation Mono", Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK JP'; }
.pdf:lang(zh-CN) .code { font-family: Source Code Pro, "SFMono-Regular", Menlo, Consolas, "PT Mono", "Liberation Mono", Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK SC'; }
.pdf:lang(zh-TW) .code { font-family: Source Code Pro, "SFMono-Regular", Menlo, Consolas, "PT Mono", "Liberation Mono", Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK TC'; }
.pdf:lang(ko-KR) .code { font-family: Source Code Pro, "SFMono-Regular", Menlo, Consolas, "PT Mono", "Liberation Mono", Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK KR'; }
.pdf .serif { font-family: PT Serif, Lyon-Text, Georgia, ui-serif, serif, 'Twemoji', 'Noto Color Emoji', 'Noto Serif CJK JP'; }
.pdf:lang(zh-CN) .serif { font-family: PT Serif, Lyon-Text, Georgia, ui-serif, serif, 'Twemoji', 'Noto Color Emoji', 'Noto Serif CJK SC'; }
.pdf:lang(zh-TW) .serif { font-family: PT Serif, Lyon-Text, Georgia, ui-serif, serif, 'Twemoji', 'Noto Color Emoji', 'Noto Serif CJK TC'; }
.pdf:lang(ko-KR) .serif { font-family: PT Serif, Lyon-Text, Georgia, ui-serif, serif, 'Twemoji', 'Noto Color Emoji', 'Noto Serif CJK KR'; }
.pdf .mono { font-family: PT Mono, iawriter-mono, Nitti, Menlo, Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK JP'; }
.pdf:lang(zh-CN) .mono { font-family: PT Mono, iawriter-mono, Nitti, Menlo, Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK SC'; }
.pdf:lang(zh-TW) .mono { font-family: PT Mono, iawriter-mono, Nitti, Menlo, Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK TC'; }
.pdf:lang(ko-KR) .mono { font-family: PT Mono, iawriter-mono, Nitti, Menlo, Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK KR'; }
.highlight-default {
	color: rgba(55, 53, 47, 1);
}
.highlight-gray {
	color: rgba(120, 119, 116, 1);
	fill: rgba(120, 119, 116, 1);
}
.highlight-brown {
	color: rgba(159, 107, 83, 1);
	fill: rgba(159, 107, 83, 1);
}
.highlight-orange {
	color: rgba(217, 115, 13, 1);
	fill: rgba(217, 115, 13, 1);
}
.highlight-yellow {
	color: rgba(203, 145, 47, 1);
	fill: rgba(203, 145, 47, 1);
}
.highlight-teal {
	color: rgba(68, 131, 97, 1);
	fill: rgba(68, 131, 97, 1);
}
.highlight-blue {
	color: rgba(51, 126, 169, 1);
	fill: rgba(51, 126, 169, 1);
}
.highlight-purple {
	color: rgba(144, 101, 176, 1);
	fill: rgba(144, 101, 176, 1);
}
.highlight-pink {
	color: rgba(193, 76, 138, 1);
	fill: rgba(193, 76, 138, 1);
}
.highlight-red {
	color: rgba(212, 76, 71, 1);
	fill: rgba(212, 76, 71, 1);
}
.highlight-gray_background {
	background: rgba(241, 241, 239, 1);
}
.highlight-brown_background {
	background: rgba(244, 238, 238, 1);
}
.highlight-orange_background {
	background: rgba(251, 236, 221, 1);
}
.highlight-yellow_background {
	background: rgba(251, 243, 219, 1);
}
.highlight-teal_background {
	background: rgba(237, 243, 236, 1);
}
.highlight-blue_background {
	background: rgba(231, 243, 248, 1);
}
.highlight-purple_background {
	background: rgba(244, 240, 247, 0.8);
}
.highlight-pink_background {
	background: rgba(249, 238, 243, 0.8);
}
.highlight-red_background {
	background: rgba(253, 235, 236, 1);
}
.block-color-default {
	color: inherit;
	fill: inherit;
}
.block-color-gray {
	color: rgba(120, 119, 116, 1);
	fill: rgba(120, 119, 116, 1);
}
.block-color-brown {
	color: rgba(159, 107, 83, 1);
	fill: rgba(159, 107, 83, 1);
}
.block-color-orange {
	color: rgba(217, 115, 13, 1);
	fill: rgba(217, 115, 13, 1);
}
.block-color-yellow {
	color: rgba(203, 145, 47, 1);
	fill: rgba(203, 145, 47, 1);
}
.block-color-teal {
	color: rgba(68, 131, 97, 1);
	fill: rgba(68, 131, 97, 1);
}
.block-color-blue {
	color: rgba(51, 126, 169, 1);
	fill: rgba(51, 126, 169, 1);
}
.block-color-purple {
	color: rgba(144, 101, 176, 1);
	fill: rgba(144, 101, 176, 1);
}
.block-color-pink {
	color: rgba(193, 76, 138, 1);
	fill: rgba(193, 76, 138, 1);
}
.block-color-red {
	color: rgba(212, 76, 71, 1);
	fill: rgba(212, 76, 71, 1);
}
.block-color-gray_background {
	background: rgba(241, 241, 239, 1);
}
.block-color-brown_background {
	background: rgba(244, 238, 238, 1);
}
.block-color-orange_background {
	background: rgba(251, 236, 221, 1);
}
.block-color-yellow_background {
	background: rgba(251, 243, 219, 1);
}
.block-color-teal_background {
	background: rgba(237, 243, 236, 1);
}
.block-color-blue_background {
	background: rgba(231, 243, 248, 1);
}
.block-color-purple_background {
	background: rgba(244, 240, 247, 0.8);
}
.block-color-pink_background {
	background: rgba(249, 238, 243, 0.8);
}
.block-color-red_background {
	background: rgba(253, 235, 236, 1);
}
.select-value-color-pink { background-color: rgba(245, 224, 233, 1); }
.select-value-color-purple { background-color: rgba(232, 222, 238, 1); }
.select-value-color-green { background-color: rgba(219, 237, 219, 1); }
.select-value-color-gray { background-color: rgba(227, 226, 224, 1); }
.select-value-color-translucentGray { background-color: rgba(255, 255, 255, 0.0375); }
.select-value-color-orange { background-color: rgba(250, 222, 201, 1); }
.select-value-color-brown { background-color: rgba(238, 224, 218, 1); }
.select-value-color-red { background-color: rgba(255, 226, 221, 1); }
.select-value-color-yellow { background-color: rgba(253, 236, 200, 1); }
.select-value-color-blue { background-color: rgba(211, 229, 239, 1); }

.checkbox {
	display: inline-flex;
	vertical-align: text-bottom;
	width: 16;
	height: 16;
	background-size: 16px;
	margin-left: 2px;
	margin-right: 5px;
}

.checkbox-on {
	background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%2358A9D7%22%2F%3E%0A%3Cpath%20d%3D%22M6.71429%2012.2852L14%204.9995L12.7143%203.71436L6.71429%209.71378L3.28571%206.2831L2%207.57092L6.71429%2012.2852Z%22%20fill%3D%22white%22%2F%3E%0A%3C%2Fsvg%3E");
}

.checkbox-off {
	background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%220.75%22%20y%3D%220.75%22%20width%3D%2214.5%22%20height%3D%2214.5%22%20fill%3D%22white%22%20stroke%3D%22%2336352F%22%20stroke-width%3D%221.5%22%2F%3E%0A%3C%2Fsvg%3E");
}
	
</style></head><body><article id="e2e12d65-47a6-4fcf-9342-c9e4620e2a95" class="page mono"><header><div class="page-header-icon undefined"><img class="icon" src="https://www.notion.so/icons/boombox_yellow.svg"/></div><h1 class="page-title">存储管理</h1></header><div class="page-body"><p id="1d111ff9-76f6-4ee5-9bbf-c1d798b6be10" class=""><mark class="highlight-orange">这篇文章将会讨论存储管理的相关内容。</mark></p><p id="30dcda71-cad4-4e05-8215-ec9279ed222c" class="block-color-gray_background">存储管理是指对于计算机系统中的数据进行管理、存储、保护和备份的一系列操作。存储管理的目的是为了提高数据的可靠性和安全性，使数据能够更加有效地被使用和共享。</p><p id="66f295b7-81a8-4941-8fa6-a7aebf3c6229" class="block-color-gray_background">在存储管理中，有很多重要的概念和技术，比如数据备份、数据恢复、磁盘阵列、RAID、存储虚拟化等等。这些技术和概念都是为了保证数据的完整性、可靠性和安全性。</p><p id="2d2b5b54-4cef-45f9-a3b7-1f30fb6960e3" class="block-color-gray_background">主存储器是一种计算机中的内部存储器，它被用于存储正在执行的程序以及计算机正在处理的数据。主存储器在计算机中起着至关重要的作用，它可以更快地读取和写入数据，从而提高计算机的性能。除了主存储器，计算机中还有许多其他类型的存储器，如硬盘驱动器、固态硬盘和外部存储设备等。主存储器通常由DRAM芯片制成，这些芯片可以读取和写入数据。与其他类型的存储器相比，主存储器的速度更快，但容量较小。因此，它经常被用作临时存储器，以提高计算机的性能。</p><h2 id="73588dd9-742f-4058-94ec-57a344208ffe" class="">存储器的结构</h2><p id="d3511613-7a97-4dfb-8fd7-b6020a222077" class="block-color-gray_background">是指计算机中用于存储和读取数据的硬件部件。在计算机中，存储器是非常重要的组成部分，它可以存储程序和数据，以供处理器进行访问和操作。存储器的种类有很多，例如主存储器、辅助存储器、高速缓存等。主存储器是CPU能够直接访问的存储器，而辅助存储器则是用于长期存储数据和程序的存储器，通常速度比主存储器慢。高速缓存则是介于主存储器和CPU之间的一种存储器，它可以存储CPU频繁使用的数据和指令，以提高计算机的运行速度。因此，存储器结构的设计和使用对计算机的性能和运行速度具有很大的影响。</p><p id="05142419-2bf7-4b81-af94-e0aa779ca461" class="">
</p><h2 id="51eeed48-d474-45bb-b03e-a7e2144785aa" class="">虚拟地址</h2><p id="8b3dc214-6c2b-45ef-a08c-f08ed50a1f80" class="block-color-gray_background">虚拟地址是指在计算机中，由操作系统分配给进程的一段地址空间。每个进程都有自己的虚拟地址空间，这个空间包含了程序的代码、数据、堆栈等。虚拟地址是逻辑地址的一种，它与物理地址是一一对应的关系，操作系统会将虚拟地址映射到物理地址上。这种映射方式可以使得多个进程共享物理内存，从而提高内存的利用率。此外，虚拟地址还可以实现内存保护和进程隔离等功能，保证了系统的稳定性和安全性。也称为相对地址、程序地址、逻辑地址。</p><h2 id="bce7dca0-6778-453c-9f35-af84d2606f54" class="">地址空间</h2><p id="81038ebe-00eb-4f88-8668-518463c5e077" class="block-color-gray_background">地址空间是指操作系统为每个进程分配的一段连续的虚拟地址区域。这个区域包含了进程执行时所需要的代码、数据和堆栈等。地址空间的大小取决于操作系统的位数和硬件限制，通常为32位或64位。地址空间的划分可以使得多个进程共享物理内存，从而提高内存的利用率。通过地址转换技术，操作系统将进程的虚拟地址映射到物理地址上，使得进程可以访问对应的物理内存。地址空间的划分也可以实现内存保护和进程隔离等功能，保证了系统的稳定性和安全性。</p><h2 id="5adee68e-1a73-4b61-ad8a-cd8f7225b8ab" class="">地址重定位</h2><p id="cbee8dc9-2438-40f9-8b0f-36d18dd64c88" class="block-color-gray_background">地址重定位是指当一个程序试图访问一个已经被分配给其他程序的内存地址时，操作系统将该程序的地址空间重定位到另一个可用的内存地址。这通常发生在多进程环境中，以确保每个程序都有独立的内存空间，以避免内存冲突和数据损坏。（了解：地址重定位还有其他应用，例如在计算机网络中，路由器可以使用地址重定位来将数据包从一个网络接口转发到另一个网络接口，并确保数据包到达正确的目的地。）</p><p id="97279574-8467-432a-a75d-f35bf83116f8" class="block-color-gray_background">（1）静态地址重定位是在程序执行之前完成的一种地址重定位技术。在这种技术中，程序的地址空间被分成多个段，每个段都有<mark class="highlight-yellow">固定</mark>的基地址。当程序需要访问内存时，操作系统将段基地址与程序中的偏移地址相加，得到物理地址。由于基地址是固定的，因此这种地址重定位技术是静态的。它的优点是速度快，但缺点是程序的内存空间不能动态分配。</p><p id="2524b793-8784-40c9-a285-4e49dfd267e0" class="block-color-gray_background">（2）动态地址重定位是在程序执行时完成的一种地址重定位技术。在这种技术中，程序的地址空间是动态分配的，当程序需要访问内存时，操作系统将程序中的逻辑地址转换为物理地址。这种地址重定位技术的优点是程序的内存空间可以动态分配，缺点是速度相对较慢。</p><h2 id="cc6b3c7d-4e5a-40cc-bbc8-76e2d6f041ba" class="">存储管理方案</h2><p id="55500d02-8550-4e3c-b3cf-8819b72088c5" class=""><strong>分页存储管理、分区存储管理、分段存储管理、段页式存储方案。</strong></p><h3 id="a8e8e6bf-fa61-448c-b4ca-128a65339c66" class="">分区存储管理：</h3><p id="5225c0ad-7e81-441f-8d32-e03108e6a0f8" class="block-color-gray_background">分区存储管理有三种方式：固定分区、可变分区和可重定位分区。固定分区是将内存分成若干个固定大小的区域，每个区域可以分配给一个进程，但是如果进程所需要的内存大小不足一个分区，会浪费一些内存。可变分区是将内存分成大小不等的若干个区域，每个区域可以分配给一个进程，但是会产生内存碎片的问题。可重定位分区是在进程运行时可以动态地改变进程所在的内存位置，从而使得进程可以使用更大的内存空间。可重定位分区的实现需要使用到地址重定位技术，它可以将逻辑地址映射到物理地址上。与动态分区不同，可重定位分区的分区大小是可变的，因此可以更加灵活地管理内存空间。</p><p id="6a66ddb1-1d51-4b6c-9d0c-ac857a4f293f" class="">分区保护</p><p id="596f85d2-f709-432f-ad39-0008631538a8" class="block-color-gray_background">分区保护是指在分区存储管理中，为了保护一个进程的内存空间，禁止其他进程访问该内存空间的一种技术。在分区保护技术中，每个进程都被分配一个独立的内存区域，其他进程无法访问该区域。这种技术可以保护进程的数据和程序，防止其他进程对其进行修改或破坏。分区保护通常通过硬件或软件实现，其中硬件实现是基于CPU硬件的特性，软件实现是通过操作系统的内存管理模块实现的。分区保护技术对于多进程系统的稳定性和安全性具有重要的作用。</p><p id="12fcd24f-7aeb-4c30-8aa6-43f904d8bd41" class="block-color-gray_background">分为上界/下界寄存器保护与基址/限长寄存器保护</p><h3 id="ee413273-4cd7-4cd2-8289-054b73952855" class="">分页存储管理：</h3><p id="1cc7d6d4-80e8-4e9f-a45a-8666f3322248" class=""><strong>纯分页存储管理：</strong></p><p id="da7b6215-2c7d-4fc5-9f97-cd48841462b1" class="block-color-gray_background">指的是将内存空间划分为若干个固定大小的页面，每个页面大小相同，一般为4KB或者8KB。进程的地址空间也被划分为若干个大小相同的页面，每个页面的大小与物理页面大小相同。进程访问内存时，逻辑地址被分为两部分：页号和页内偏移量。页号用来标识进程所在的页面，页内偏移量用来标识进程内存中的偏移量。操作系统通过页表维护逻辑地址到物理地址的映射关系，从而实现地址转换。纯分页存储管理的优点是可以灵活地分配内存，缺点是会产生内部碎片，因为进程所需要的内存大小不一定是页面大小的整数倍。</p><p id="1fc0ae40-9f79-40f5-8cf5-da19dda23fe5" class="block-color-gray_background">页表是一个重要的数据结构，用来记录页面的映射信息。页表中每个条目对应一个页面，它包含了页面在物理内存中的起始地址、页面的状态（已分配或未分配）、页面所属的进程等信息。当进程访问内存时，操作系统会根据页表将逻辑地址映射到物理地址上。在访问内存时，如果所需页面不在物理内存中，操作系统就会将该页面从磁盘中读入内存。如果内存中没有空闲页面，操作系统就会使用页面置换算法来选择一个页面进行置换。</p><p id="b79b7d52-ee1c-46ff-b7ea-feb009e567e3" class="block-color-gray_background">纯分页存储管理的实现需要考虑以下几个问题：</p><p id="858b9b5f-e9b8-46f6-9c17-89a160d24c42" class="block-color-gray_background">页面大小的选择、页表的实现、页面置换算法的选择、内存分配算法的选择</p><p id="b450be9b-904f-4c18-971a-47f8aed1ca3e" class="block-color-gray_background">纯分页存储管理可以有效地解决内存碎片的问题，提高内存的利用率。但是它也存在一些问题，例如页表占用的内存空间较大，访问内存时需要进行两次地址转换，会降低访问速度。因此，在实际应用中，纯分页存储管理经常被结合其他存储管理方案一起使用。</p><h3 id="76915846-9087-4b0a-bfd0-90d809ef1aea" class="">快表</h3><p id="ef6646c7-3975-46d9-a45b-3508b677c8e1" class="block-color-gray_background">快表（Translation Lookaside Buffer，TLB）是用于加速虚拟地址到物理地址转换的一种高速缓存。快表通常由硬件实现，它的作用是缓存页表中的部分映射关系，从而避免每次访问内存时都要访问页表。当进程访问内存时，操作系统会先在快表中查找是否有该虚拟地址对应的物理地址。如果快表中存在该映射关系，则可以直接访问物理内存；否则，需要访问页表来查找该映射关系。由于快表是高速缓存，因此能够显著提高内存访问速度。<div class="indented"><p id="3f56c459-6b8b-4d36-bde6-fbafc40df93b" class="block-color-gray_background">快表通常由一组缓存条目组成，每个条目包含一个虚拟地址和对应的物理地址。在访问内存时，操作系统会将虚拟地址分为两部分：页号和页内偏移量。页号用来查找快表中的条目，如果快表中存在该条目，则可以通过该条目中的物理地址计算出实际的物理地址。如果快表中不存在该条目，则需要访问页表来查找映射关系，并将该映射关系添加到快表中。<div class="indented"><p id="f044efe9-f74e-421d-bb70-09a7966ba5ce" class="block-color-gray_background">由于快表是一种高速缓存，因此它的容量通常比较有限。当快表已满时，需要使用一些替换算法来决定哪些条目应该被替换出去。常见的快表替换算法有先进先出（FIFO）、最近最少使用（LRU）等。</p></div></p></div></p><h3 id="da258ff1-702a-4071-963b-40883e407929" class="">分段存储管理：</h3><p id="53ede030-b4f6-4b75-81fc-987a86a6af43" class="block-color-gray_background">分段存储管理是一种内存管理方案，它将程序的地址空间划分为若干个逻辑段，每个逻辑段代表程序中的一个逻辑单元，例如代码段、数据段等。每个逻辑段都有一个段号和段长度，操作系统通过段表维护逻辑地址到物理地址的映射关系，从而将逻辑地址转换为物理地址。分段存储管理的主要优点是可以更好地支持程序的模块化设计，便于程序的维护和管理。此外，分段存储管理还可以提高程序的运行效率，因为不同逻辑段可以分配到不同的物理内存区域，从而避免了内存碎片的问题。但是，分段存储管理也存在一些问题，例如段内碎片和外部碎片等，需要通过一些算法来解决这些问题。常见的分段存储管理算法有固定分段分配、动态分段分配等。</p><h2 id="1035c3cd-cdcb-4819-952e-f01103e9aaf3" class="">虚拟存储管理：</h2><p id="1421d339-7232-44c8-9999-d3f2d090b593" class=""><strong>容量是由计算机的地址结构决定的</strong></p><h3 id="b3b14387-0ab7-40e5-a2a5-fec878dde295" class="">程序局部性原理</h3><div><p id="de27e8e5-1e63-4374-b6e7-c70f4238a7d7" class=""><mark class="highlight-gray_background">是指程序运行过程中，访问某些数据的时间集中在一段时间内，而不是平均分布在整个运行过程中。这种局部性主要分为两种类型：时间局部性和空间局部性。时间局部性是指程序在一段时间内多次访问同一数据的特性，例如循环结构中的变量。空间局部性是指程序在一段时间内多次访问同一数据块的特性，例如数组和矩阵等数据结构。程序局部性原理对于计算机系统的设计和优化具有重要的作用，可以提高系统的运行效率和响应速度。</mark></p></div><h3 id="8708247a-3400-4677-b4bb-f7ab36eabd6e" class="">页面置换算法</h3><p id="c743d83b-7846-453f-8940-04dcb724e89f" class=""><mark class="highlight-gray_background"><strong>最佳置换算法</strong></mark><mark class="highlight-gray_background">（OPT）是一种页面置换算法，它的思想是选择未来最长时间不再被访问的页面进行置换。最佳置换算法需要预测未来的访问模式，因此它是一种理论上的算法，很难在实际应用中得到完美的效果。</mark></p><p id="09c97c8e-45a0-438f-a2ae-61e1a54ef78a" class=""><mark class="highlight-gray_background">举个例子，假设一个进程需要访问以下页面：1，3，2，4，5，3，1，6。假设系统中只有3个页面可以使用，我们需要选择哪个页面进行置换。使用最佳置换算法，我们需要预测未来的访问模式，计算出每个页面下一次被访问的时间，并选择最长时间不再被访问的页面进行置换。根据该算法，我们可以得到以下结果：</mark></p><table id="02cbcb1e-e14b-4b1b-931e-0a4a339646e1" class="simple-table"><tbody><tr id="524fcce4-2934-46af-bbef-40a5a3e66f74"><td id="l_bD" class="">页面</td><td id="vN&gt;[" class="">下一次访问时间</td></tr><tr id="d374cbe4-b800-4921-a0d8-e6deca12689a"><td id="l_bD" class="">1</td><td id="vN&gt;[" class="">6</td></tr><tr id="263974d2-2f11-4243-8c0d-d0be9d91e38e"><td id="l_bD" class="">2</td><td id="vN&gt;[" class="">2</td></tr><tr id="7f050ec9-4c06-4be7-9927-5aa200401016"><td id="l_bD" class="">3</td><td id="vN&gt;[" class="">5</td></tr><tr id="1ee2650a-6c3a-480f-bc16-8e6f205bda0c"><td id="l_bD" class="">4</td><td id="vN&gt;[" class="">3</td></tr><tr id="7a3dfe5c-2aad-4d83-82a8-dcebf441bf51"><td id="l_bD" class="">5</td><td id="vN&gt;[" class="">4</td></tr><tr id="7a3a9234-a6ba-4702-bcb3-70271bc6069f"><td id="l_bD" class="">6</td><td id="vN&gt;[" class="">无</td></tr></tbody></table><p id="a119e6c8-c0d9-4d35-be9e-a395200fae9e" class=""><mark class="highlight-gray_background">根据上表，我们可以发现页面2、4、5都在未来的第三次访问时才会被访问，因此它们是最佳的置换选择之一。如果我们选择页面4进行置换，那么下一次访问页面4时就需要从磁盘中读取页面，造成一定的时间开销。如果我们选择页面2或5进行置换，则可以避免页面置换时的磁盘访问，提高系统的运行效率。</mark></p><p id="bdc0b568-6a1a-4709-bfc7-d16c1e95a370" class=""><mark class="highlight-gray_background"><strong>先进先出</strong></mark><mark class="highlight-gray_background">（FIFO）置换算法是一种常见的页面置换算法。它的基本思想是选择最早进入内存的页面进行置换。具体地说，当一个页面需要被置换时，操作系统会查找内存中最早进入的页面，并将其置换出去。FIFO置换算法的实现非常简单，只需要维护一个页面队列即可。当新页面进入内存时，它会被加入到队列的尾部。当需要置换页面时，队列的头部元素会被置换出去。因此，FIFO置换算法是一种非常容易实现的算法，但是它的效率比较低，因为它无法根据页面的使用情况进行置换。</mark></p><p id="434ab2cc-8084-48d7-bcf4-82eeef2be23a" class=""><mark class="highlight-gray_background">举个例子，假设一个进程需要访问以下页面：1，2，3，4，1，2，5，1，2，3，4，5。假设系统中只有3个页面可以使用，我们需要选择哪个页面进行置换。使用FIFO置换算法，我们需要维护一个页面队列，记录各个页面进入内存的顺序。根据该算法，我们可以得到以下结果：</mark></p><table id="8505188a-3594-4074-8974-be780e6b4614" class="simple-table"><tbody><tr id="b9477919-b39a-4f92-9cde-8ebb56a2d89d"><td id="@zVq" class="">页面</td><td id="[WCV" class="">进入时间</td><td id="tUsQ" class="">离开时间</td></tr><tr id="f61b1bed-97ed-4b18-bfbe-75ebe7d0f795"><td id="@zVq" class="">1</td><td id="[WCV" class="">1</td><td id="tUsQ" class="">5</td></tr><tr id="55dbccbf-b399-45c6-96a1-029003aa9222"><td id="@zVq" class="">2</td><td id="[WCV" class="">2</td><td id="tUsQ" class="">6</td></tr><tr id="dc293e1e-58e2-43a5-8f24-00479a483f30"><td id="@zVq" class="">3</td><td id="[WCV" class="">3</td><td id="tUsQ" class="">10</td></tr><tr id="8df16022-37ad-44bb-abbe-b39aed747bab"><td id="@zVq" class="">4</td><td id="[WCV" class="">4</td><td id="tUsQ" class="">11</td></tr><tr id="67f449f1-57cf-41e6-998e-8d58379f42d9"><td id="@zVq" class="">5</td><td id="[WCV" class="">7</td><td id="tUsQ" class="">12</td></tr></tbody></table><p id="ab709e12-7aa4-4cca-a60a-e771108a8cd9" class=""><mark class="highlight-gray_background">根据上表，我们可以发现页面1、2、3是最早进入内存的页面，因此它们是FIFO置换算法的置换选择之一。如果我们选择页面1进行置换，那么下一次访问页面1时就需要从磁盘中读取页面，造成一定的时间开销。如果我们选择页面2或3进行置换，则可以避免页面置换时的磁盘访问，提高系统的运行效率。</mark></p><p id="3fd469ab-5648-4b7e-b0de-b082f3f40d4b" class=""><mark class="highlight-gray_background"><strong>最近最少使用</strong></mark><mark class="highlight-gray_background">（LRU）置换算法是一种常见的页面置换算法。它的基本思想是选择最近最久未使用的页面进行置换。具体地说，当一个页面需要被置换时，操作系统会查找内存中最近最久未使用的页面，并将其置换出去。LRU置换算法可以根据页面的使用情况进行置换，因此它的效率比FIFO置换算法更高。但是，LRU置换算法的实现较为复杂，需要维护一个页面访问时间的链表或者栈。</mark></p><p id="dcecfe4d-7c62-4733-af56-a6108fbc4c8e" class=""><mark class="highlight-gray_background">使用LRU置换算法，我们可以得到以下结果：</mark></p><table id="4d5230ae-ce0d-4974-a99c-ea01e1950770" class="simple-table"><tbody><tr id="d0d7b6c1-5773-427a-911f-1af95a61348a"><td id="mj[a" class="">页面</td><td id="F`Qq" class="">访问时间</td></tr><tr id="8793a1af-2d69-4ffb-99d5-67d280ea7b41"><td id="mj[a" class="">1</td><td id="F`Qq" class="">1, 5, 8</td></tr><tr id="a18e935e-d4ae-4ad6-91a1-8f9005124fc7"><td id="mj[a" class="">2</td><td id="F`Qq" class="">2, 6, 9</td></tr><tr id="f98eaeb6-1b48-479f-9f2c-795152bc4baa"><td id="mj[a" class="">3</td><td id="F`Qq" class="">3, 10</td></tr><tr id="f8370749-60f6-4799-a6bf-bbc287b1bab1"><td id="mj[a" class="">4</td><td id="F`Qq" class="">4, 11</td></tr><tr id="e4867de8-a928-4c42-93e8-8682b91cf4c5"><td id="mj[a" class="">5</td><td id="F`Qq" class="">7, 12</td></tr></tbody></table><p id="21e04937-377a-4aef-aa76-0f419f2dfe99" class=""><mark class="highlight-gray_background">根据上表，我们可以发现页面4、5是最近最久未使用的页面，因此它们是LRU置换算法的置换选择之一。如果我们选择页面4进行置换，那么下一次访问页面4时就需要从磁盘中读取页面，造成一定的时间开销。如果我们选择页面5进行置换，则可以避免页面置换时的磁盘访问，提高系统的运行效率。</mark></p><p id="c299c5ba-b379-4845-a3e2-9b7ef34f1a85" class=""><mark class="highlight-gray_background"><strong>最近未用</strong></mark><mark class="highlight-gray_background">（LRU）置换算法是一种常见的页面置换算法。它的基本思想是选择最近最久未使用的页面进行置换。具体地说，当一个页面需要被置换时，操作系统会查找内存中最近最久未使用的页面，并将其置换出去。LRU置换算法可以根据页面的使用情况进行置换，因此它的效率比FIFO置换算法更高。但是，LRU置换算法的实现较为复杂，需要维护一个页面访问时间的链表或者栈。</mark></p><p id="5f6cf667-30d3-4efd-8cea-3c1fb3ebe59b" class="">使用LRU置换算法，我们可以得到以下结果：</p><table id="4a30f7e2-e663-477b-bfe1-a344890bd222" class="simple-table"><tbody><tr id="e75909cc-cbc8-41f7-8ed6-c1deaddb9b21"><td id="hBu]" class="">页面</td><td id="yKWD" class="">访问时间</td></tr><tr id="82f97c91-efaf-41a8-b0aa-5ee359debd0d"><td id="hBu]" class="">1</td><td id="yKWD" class="">1, 5, 8</td></tr><tr id="6c0377b6-b8a5-4e8d-a558-cabf933df891"><td id="hBu]" class="">2</td><td id="yKWD" class="">2, 6, 9</td></tr><tr id="22748752-afd0-4228-8329-8f502a3c920d"><td id="hBu]" class="">3</td><td id="yKWD" class="">3, 10</td></tr><tr id="6dd45d9b-e7b0-4c4f-9bb8-630997de35d0"><td id="hBu]" class="">4</td><td id="yKWD" class="">4, 11</td></tr><tr id="9aba0132-4734-4457-92a4-2b9bbaf676f9"><td id="hBu]" class="">5</td><td id="yKWD" class="">7, 12</td></tr></tbody></table><p id="6bc44e83-4e75-41ce-94a1-8c47eb2d7f22" class=""><mark class="highlight-gray_background">根据上表，我们可以发现页面4、5是最近最久未使用的页面，因此它们是LRU置换算法的置换选择之一。如果我们选择页面4进行置换，那么下一次访问页面4时就需要从磁盘中读取页面，造成一定的时间开销。如果我们选择页面5进行置换，则可以避免页面置换时的磁盘访问，提高系统的运行效率。</mark></p><h2 id="a0685f46-6070-4fec-9ba7-109cb12916d7" class="">设备管理</h2><p id="6db7bec9-141d-4222-bdc9-c9bb7d10a55c" class=""><mark class="highlight-gray_background">设备管理是操作系统中的一个重要模块，它负责管理计算机系统中的各种设备资源，例如磁盘、打印机、键盘、鼠标等。设备管理的主要任务是为进程提供访问设备资源的接口，同时协调各个进程对设备资源的访问，避免发生资源冲突和竞争。设备管理的功能包括设备分配、设备释放、设备驱动程序的加载和卸载、设备性能监控和设备故障处理等。在实际的操作系统中，设备管理通常采用中断、DMA、轮询等不同的技术来实现。除了设备管理模块，操作系统中还包括了内存管理、进程管理、文件系统管理等模块，它们共同协作，构成了一个完整的操作系统。</mark></p><h3 id="87280195-a52c-455b-bc81-2a12e09ea2db" class="">设备管理概述</h3><p id="09271675-1d06-41ce-b01d-d736e2a9ed9d" class=""><strong>设备的分类</strong></p><p id="6e1108a9-4b8b-44a7-a8c3-8d53fdf5846b" class=""><mark class="highlight-gray_background"><strong>按照数据组织分类为</strong></mark><mark class="highlight-gray_background">：块设备和字符设备。块设备是一种存储数据的设备，它通过块的形式来操作数据。而字符设备则是一种按字符来操作数据的设备。块设备通常用于存储大量的数据，例如硬盘驱动器、USB驱动器等。而字符设备则通常用于与用户进行交互，例如键盘、鼠标、打印机等。虽然两者都是用于数据的存储或传输，但它们的工作方式和应用场景有所不同。</mark></p><p id="81546a7f-c9d7-410f-ba5f-f8c4218bb721" class=""><mark class="highlight-gray_background"><strong>从资源分配角度分类为：</strong></mark><mark class="highlight-gray_background">独占设备、共享设备和虚拟设备。独占设备是指只能由一个进程独占使用的设备，例如磁盘驱动器。共享设备是指可以被多个进程共享使用的设备，例如打印机。虚拟设备是指通过软件模拟的设备，例如虚拟打印机。</mark></p><p id="438faeea-06e4-40a5-937e-cf7823067028" class=""><mark class="highlight-gray_background">在设备管理中，不同的设备分类方式对应着不同的管理策略和技术。例如，对于独占设备，操作系统可以采用锁机制来实现资源的互斥访问；对于共享设备，操作系统可以采用信号量机制来实现资源的共享访问；对于虚拟设备，操作系统可以采用虚拟化技术来实现设备的模拟和管理。</mark></p><p id="697ed5c8-384c-4aea-b2ce-4a8f50343ffc" class=""><mark class="highlight-gray_background"><strong>按数据传输率分类：</strong></mark><mark class="highlight-gray_background">低速设备：打印机、扫描仪、键盘、鼠标等外部设备。</mark></p><p id="b9559a09-b8c9-49fc-b3b6-a27d3bb1b060" class=""><mark class="highlight-gray_background">中速设备：硬盘驱动器、固态硬盘、磁盘阵列等。</mark></p><p id="9f496dfd-47e9-4229-9c53-7cade82f03d4" class=""><mark class="highlight-gray_background">高速设备：CPU、内存、高速缓存、磁盘机、光盘机等。</mark></p><h3 id="662dc98d-c617-4790-987c-1e4a32ef4b51" class="">设备管理的任务和目标</h3><p id="9c146d20-9910-46ca-9dbd-fc5e9b04ef41" class=""><mark class="highlight-gray_background">设备管理目标为：提高设备的利用率，为用户提供方便统一的界面。提高设备利用率就是提高cpu与输入输出设备之间的并行操作程度，采用的技术主要包括：中断、dma技术、通道和缓存。</mark></p><div><p id="f2c3a4ed-02c9-4a11-ac26-3d9b6c243197" class=""><mark class="highlight-gray_background">DMA （Direct Memory Access，直接内存访问）技术是一种计算机设备的数据传输方式，它可以在不经过CPU的情况下，直接将数据从设备传输到内存。在传输过程中，DMA控制器会与设备进行通信，以控制数据传输的速度和方向。通过使用DMA技术，可以提高数据传输的效率，并减轻CPU的负担。在操作系统中，DMA技术通常用于高速设备的数据传输，例如硬盘驱动器、固态硬盘等。DMA技术可以提高数据传输的速度，从而提高系统的运行效率。</mark></p></div><p id="fe0f3556-7e4c-426e-abf7-c3f2ea50c07d" class=""><mark class="highlight-gray_background">设备管理的任务为：在多道程序环境下，当多个竞争使用设备时，按一定策略分配和管理各种设备，控制设备的各种操作，完成i/o设备与主存之间的数据交换</mark></p><h3 id="3742fcb7-4d13-4bcb-a371-daa20f603e8e" class="">设备管理技术</h3><p id="506453f1-43f7-4975-abec-b7e767375670" class=""><mark class="highlight-gray_background">设备管理技术主要包括通道技术、DMA技术、缓冲技术、Spooling技术</mark></p><p id="c074822c-053e-4acd-b0d8-88a0b230547a" class=""><mark class="highlight-gray_background">通道技术：使数据传输独立于cpu，将cpu从繁琐的i/o工作中解脱出来。cpu向通道发出输入输出命令，通道收到后，从内存中取出本次输入输出要执行的通道程序加以执行，当通道完成输入输出任务后，才向cpu发出中断信号。</mark></p><p id="26acdedd-fb9d-41d1-9653-4e260c24dcfc" class=""><mark class="highlight-gray_background">DMA技术：在计算机科学中，直接内存存取（DMA）是一种允许外设（如网卡、声卡、显卡等）访问主机内存的机制。这种机制允许数据在外设和主机之间直接传输，而不需要CPU的介入。 DMA在高速数据传输和多任务处理方面很有用，因为它可以释放CPU的工作负担，从而提高系统性能。</mark></p><p id="c1f10c8f-a90b-40a1-a998-47f678d540b1" class=""><mark class="highlight-gray_background">缓冲技术是一种常用的技术，其作用是通过在计算机系统的不同部分之间插入缓存来提高外设的利用率。缓存是一种高速存储器，可以暂时存储数据和指令，以便系统更快地访问它们。缓冲技术可以在数据传输和处理过程中减少延迟和等待时间，从而提高计算机系统的整体性能。对于需要处理大量数据的场景，如视频编辑和3D建模，缓冲技术可以显著提高生产效率，减少处理时间，以及减轻计算机处理负担。此外，缓冲技术也可以帮助减少系统崩溃和故障的概率，增强系统的稳定性和可靠性。引入缓存技术主要目的有：1、缓和cpu与输入输出设备间速度不匹配的矛盾。2、减少对cpu的中断频率，放宽对中断响应时间的限制。3、提高cpu与输入输出设备间的并行性。缓冲可以分为单缓冲、双缓冲、多缓冲、环形缓冲。</mark></p><p id="6a8ba8b4-aa76-472f-848d-3f43db8312bc" class=""><mark class="highlight-gray_background">spooling技术：假脱机技术</mark></p><figure id="4d45265f-064e-42a6-9eb4-8725bd034c5c" class="image"><a href="https://images2018.cnblogs.com/blog/1424868/201807/1424868-20180718100601633-2135519418.png"><img style="width:480px" src="https://images2018.cnblogs.com/blog/1424868/201807/1424868-20180718100601633-2135519418.png"/></a></figure><h3 id="61cd2bbd-4979-433f-96aa-fe413538f07b" class="">磁盘调度</h3><p id="c57b28ff-fd23-43ae-9f79-0ef02edb685f" class="block-color-gray_background">是操作系统中一个非常重要的部分，它负责将磁盘上的文件按照一定的顺序进行读写，以提高磁盘的使用效率。操作系统一般会采用多种磁盘调度算法，如先来先服务（FCFS）、最短寻找时间优先（SSTF）和扫描（SCAN）以及单项扫描调度算法(CSCAN)等，以满足不同场景下的需求。在操作系统课程中，学生们通常需要深入研究磁盘调度算法的实现机制和优化方法，以便在将来的工作中能够更好地应用和优化操作系统。</p><p id="762df5b9-a625-4136-9df4-b87d706f0079" class=""><strong>先来先服务（FCFS）</strong></p><p id="f1150f83-550d-4822-81ab-9e71f51b604b" class="block-color-gray_background">先来先服务（FCFS）是最简单的磁盘调度算法。它根据请求的到达时间来安排磁盘访问，即按照请求的先后顺序进行磁盘访问。这种算法的优点是简单易懂，实现容易。但是，在实际应用中，由于请求的到达时间不同，如果有一个请求访问的磁道较远，那么就会造成其他请求的等待时间较长，从而导致磁盘的利用率较低，响应时间较长。</p><p id="cbceb9ba-ec61-4fac-aea3-5b182a3ddf8c" class=""><strong>最短寻找时间优先（SSTF）</strong></p><p id="63b88e4e-02d6-45b0-bad1-70f01bf2cde5" class="block-color-gray_background">最短寻找时间优先（SSTF）算法是一种比较常用的磁盘调度算法。它根据当前的磁头位置和请求队列中请求的磁道位置，选择距离当前磁头位置最近的磁道进行磁盘访问。这种算法的优点是响应时间短，磁盘利用率高。但是，如果请求队列中有一些请求距离当前磁头位置较远，那么这些请求就会被长时间的忽略，从而导致磁盘的利用不足，响应时间较长。</p><p id="c99eec41-d519-4d1c-8445-ca025339ad5a" class=""><strong>扫描（SCAN）</strong></p><p id="fb81025a-931c-4e11-bb41-d18740468ee4" class="block-color-gray_background">扫描（SCAN）算法是一种比较常用的磁盘调度算法。它根据当前的磁头位置和请求队列中请求的磁道位置，选择和当前磁头方向相同的最靠近的磁道进行磁盘访问。如果在扫描的过程中没有新的请求到达，那么就会反向扫描，直到扫描到请求队列的最后一个元素。这种算法的优点是响应时间短，磁盘利用率高。但是，如果请求队列中有一些请求距离当前磁头位置较远，那么这些请求就会被长时间的忽略，从而导致磁盘的利用不足，响应时间较长。</p><p id="145ceb5e-e1f5-4fcf-bb12-4676dee7c75f" class=""><strong>单向扫描调度算法(CSCAN)</strong></p><p id="ed8d27bf-e558-4cf2-9926-ad21f0a75014" class="block-color-gray_background">单向扫描调度算法(CSCAN)是一种比较常用的磁盘调度算法。它根据当前的磁头位置和请求队列中请求的磁道位置，选择和当前磁头方向相同的。</p><h2 id="bfe3ae58-6f43-45c4-8eb4-62936ceb5a7c" class="">文件管理</h2><p id="eba529a9-415b-4c42-9a13-fd292f1d0828" class="block-color-gray_background">计算机系统里，文件是指存储在外部设备上、由一定数量的数据组成的逻辑单元，可以是程序、文档或其他任何形式的数据。文件可以被创建、读取、写入和删除，通常通过文件系统进行管理和访问。文件系统是一种操作系统提供的组织和管理计算机上文件的方法，它将文件存储在磁盘等外部设备上，并提供了对文件的访问、读写、复制、删除等操作。文件系统通常包括文件目录、文件名、文件类型、文件大小等信息，以帮助用户对文件进行管理和操作。</p><h3 id="64e51c98-6a12-4dcd-a293-30d0c982742c" class="">文件系统</h3><p id="8404e3a4-eae2-43d2-ba09-c6d4ecb34a57" class=""><strong>按名存取、统一的用户接口、并发访问和控制、安全性控制、优化性能、差错恢复。</strong></p><h3 id="7fe40c96-d6a4-4d6c-8dd0-bf2d50e95898" class="">文件分类</h3><p id="43e8eccc-0db6-48e4-872a-51376959a1dc" class=""><mark class="highlight-gray_background">文件按照性质和用途、保存期限和保护方式等通常可进行如下分类</mark></p><p id="47319a28-c04d-4779-9f91-832ed0720e73" class=""><mark class="highlight-gray_background">按保存期限和保护方式分类：备份文件、临时文件、归档文件等</mark></p><p id="4a029797-deb3-4364-b724-3fdc8d55b4f7" class=""><mark class="highlight-gray_background">按照文件的保护方式可将文件分为只读、读写、可执行文件、不保护文件</mark></p><p id="f87dbdf4-0a5d-4587-9d9d-a5d05208ce6a" class=""><mark class="highlight-gray_background">unix系统将文件分为普通文件、目录文件、设备文件</mark></p><h3 id="000b532f-268d-4167-9fff-42340ed5663c" class="">文件的结构和组织</h3><p id="fafe42d8-156f-4228-ac75-a04107ac2300" class=""><strong>文件的逻辑结构</strong></p><p id="c7a1782d-3384-497d-aa80-85a3090c8163" class=""><mark class="highlight-gray_background">文件的逻辑结构可以分为有结构的记录式文件和无结构的流式文件。有结构的记录式文件是指文件中的记录都有一定的结构，每个记录都由若干个字段组成，每个字段包含一定的信息。这种文件通常用于存储结构化数据，例如数据库中的表格数据。在这种文件中，每个记录都包含固定数量的字段，每个字段都有一个预定义的数据类型和长度。这种文件的优点是数据存储紧凑，易于查询和排序。但是，由于每个记录的长度和字段数量都是固定的，所以它不适用于存储非结构化数据，例如文本、图像和视频等。另外，在对记录进行修改或删除时，需要对整个文件进行重排，因此效率较低。</mark></p><p id="bc6cd484-e756-4d1a-914f-bba7576c063f" class=""><mark class="highlight-gray_background">定长记录：定长记录是指每个记录都有相同的长度。在一个定长记录文件中，每个记录都由若干个字段组成，每个字段都占用固定的字节数。这种文件的优点是查询和排序效率高，但是对于数据存储不规则的情况则不适用。</mark></p><p id="2a5d34ae-a33c-4921-89d8-ddfbf1d2e8a2" class=""><mark class="highlight-gray_background">变长记录：变长记录是指每个记录的长度不同。在一个变长记录文件中，每个记录由多个字段组成，每个字段的长度可以不同。这种文件的优点是可以存储不规则的数据，但是查询和排序效率较低。</mark></p><p id="052551db-02f3-4c78-9f93-3fb8ad9c4762" class=""><strong>文件的物理结构</strong></p><p id="faeecf57-5a00-4ae2-800e-4b7117b8cfcc" class=""><strong>连续结构</strong></p><p id="f4029e94-20f6-4cf2-8a8d-48689fbf6e61" class="block-color-gray_background">在连续结构中，文件的内容被存储在一连串的物理块中。这些块可以是磁盘上的连续的扇区，也可以是内存中的连续的字节。在连续结构中，文件的读取和写入非常简单，因为每个块都有一个唯一的地址。但是，由于文件的大小通常是动态变化的，因此连续结构难以管理，需要频繁地移动和重新分配块。此外，如果文件的块被散布在磁盘上，那么读取和写入文件的速度会变慢。</p><p id="ae60842e-ded0-4e0f-ba1d-cd6054a25f90" class=""><strong>链接结构</strong></p><p id="0fa0a558-dd47-420c-8618-a1e15401208f" class="block-color-gray_background">在链接结构中，文件的内容被存储在一系列不连续的块中。每个块都包含一个指向下一个块的指针，因此可以通过跟踪指针来访问整个文件。与连续结构不同，链接结构可以有效地处理文件的大小变化，因为可以在任何位置插入、删除和移动块。此外，链接结构可以更好地利用磁盘空间，因为块可以散布在磁盘上的任何位置。但是，由于需要跟踪每个块的指针，链接结构的读取和写入速度通常比连续结构慢。</p><p id="d821de05-33b1-4cca-946b-bed436f33305" class=""><strong>索引结构</strong></p><p id="94a19a43-bf71-47e0-b846-8b020f442826" class="block-color-gray_background">在索引结构中，文件的内容被分成块，并且每个块都有一个唯一的标识符。此外，还有一个索引表，其中包含文件中所有块的标识符和相应块的地址。<strong>通过查找索引表，可以找到任何块的地址</strong>，从而访问整个文件。与链接结构不同，索引结构可以更快地定位和访问文件中的任何块，因为索引表通常比文件本身更小。此外，由于块的地址不需要被存储在块中，因此可以更好地利用磁盘空间。但是，由于需要维护索引表，索引结构的读取和写入速度通常比链接结构慢。</p><h2 id="74106616-e6b9-4627-8e85-fe27fa5058ee" class="">文件目录</h2><p id="f7dadfb0-9ae2-4d28-94bc-2824716a6676" class=""><mark class="highlight-gray_background">实际上文件控制块包含了三类信息：</mark></p><p id="0910e1dc-0b2a-4207-99b9-a46b2b8e38e0" class=""><mark class="highlight-gray_background">基本信息类：包括文件名、文件大小、文件类型、文件位置、文件创建时间和文件修改时间等基本属性信息。</mark></p><p id="d9de322e-3524-4418-9378-70a6069a854c" class=""><mark class="highlight-gray_background">存取控制信息类：包括文件所有者、文件权限等信息，用于控制文件的访问和修改。</mark></p><p id="16ff56de-a664-4d3f-ba7f-6b5c20db80df" class="block-color-gray_background">使用信息类：如建立日期、最后一次修改日期等等</p><p id="7c2b7b70-d80e-4003-a585-7487a6f3fbc1" class=""><strong>目录结构</strong></p><p id="69daf631-5340-46b4-8cbb-48f648465b3d" class=""><mark class="highlight-gray_background">文件的目录结构可以分为不同级别的目录结构，包括一级目录结构、二级目录结构和多级目录结构。</mark></p><p id="8d6a7ddf-e7b0-45ee-b0fa-16db65d629eb" class=""><mark class="highlight-gray_background">一级目录结构是最简单的目录结构，其中所有的文件和目录都存储在同一层级的目录中。这种目录结构适用于文件数量较少的情况下，例如个人电脑上的文件存储。</mark></p><p id="50784a3f-8494-4adc-b4a4-a428648669a4" class=""><mark class="highlight-gray_background">二级目录结构是在一级目录结构的基础上增加了一个层级的目录结构。在这种目录结构中，所有的文件和目录都存储在不同的一级目录下，每个一级目录下可以有多个二级目录。这种目录结构适用于文件数量较多、分类较为明确的情况下，例如公司内部文档管理系统。</mark></p><p id="9f6672fa-6630-424e-a824-8877419280ec" class=""><mark class="highlight-gray_background">多级目录结构是在二级目录结构的基础上增加了更多的层级。在这种目录结构中，每个目录下可以有更多的子目录，每个子目录下又可以有更多的子目录，以此类推。这种目录结构适用于文件数量极多、分类复杂、需要多层次管理的情况下，例如大型网站的文件管理系统。</mark></p><p id="f9cee4af-d130-4eaf-bc4e-ce3de08a246f" class=""><mark class="highlight-gray_background">不同级别的目录结构可以根据不同的需求和场景进行选择和使用。选择合适的目录结构可以提高文件的管理效率和工作效率，使用户更快速地找到所需的文件和信息。</mark></p><p id="f68f9792-f900-4a58-bd17-ca4b1a60b047" class="block-color-red">PS:Windows和UNIX中的分隔符不一样。前者为 ‘\’,后者为’/’</p><h3 id="1ba57779-5538-43aa-a34e-10b9379dc37a" class="">存取方式、存取控制</h3><p id="9c3be7df-2147-4739-b86c-11d949766d59" class="">文件的存取方式</p><p id="8b754551-b2b0-4677-9dd6-97f08c2319cf" class=""><strong>顺序存取法</strong></p><p id="6a050c05-2912-4cc5-af00-5a422bfe038b" class="block-color-gray_background">顺序存取法是指按照文件中记录的顺序进行存取。这种存取方式适用于连续结构的文件，因为记录存储在一连串的物理块中。在顺序存取中，只能从文件的开始处读取数据。如果需要读取文件中的某个记录，就必须先读取之前的所有记录，直到找到需要的记录。这种存取方式的优点是简单、高效，但是对于随机存取较为困难。</p><p id="50c95446-0b0a-4298-ba80-9bd23e9c31df" class=""><strong>直接存取法</strong></p><p id="0bc69895-f18b-43af-b515-b1ff985caab4" class="block-color-gray_background">直接存取法是指根据记录的物理地址直接进行存取。这种存取方式适用于索引结构和链接结构的文件，因为每个记录都有一个唯一的标识符或指针，可以通过查找索引表或跟踪指针来访问任何记录。在直接存取中，可以随时读取文件中的任何记录，而不必按照记录的顺序进行存取。这种存取方式的优点是灵活、高效，但是需要额外的索引表或指针来定位记录，因此存储空间较大。</p><p id="f7154f29-9cf6-433d-b4ed-424d154e55ae" class=""><strong>文件存储空间的管理</strong></p><p id="8df22adf-0e2c-4f8f-afdd-3e1d1625742d" class="block-color-gray_background">常用的三种空闲空间的管理方法包括：</p><p id="37873b59-2410-49e1-9120-2b83b666498b" class="block-color-gray_background">空闲空间表法</p><p id="191e7cfa-2c2d-4d78-86a0-3bf4590c5a9f" class="block-color-gray_background">空闲空间表法是指在磁盘上维护一个空闲块的链表，每次需要分配空间时，就从链表中取出一个空闲块分配给用户。当用户释放空间时，就将该块加入空闲块链表中。这种方法比较简单，但是需要遍历整个链表才能找到合适的空闲块，因此效率较低。</p><p id="174f6306-346f-46a0-8d47-fb60c7e08556" class="block-color-gray_background">位图法</p><p id="67faba6b-2284-4335-a169-b0a1ddd07714" class="block-color-gray_background">位图法是指在磁盘上维护一个位图，用于记录每个块的使用情况。当需要分配空间时，就在位图中查找一个未被使用的块，将其标记为已使用，并将该块分配给用户。当用户释放空间时，就将该块标记为未使用。这种方法的优点是查找空闲块的效率高，但是需要额外的存储空间来存储位图。</p><p id="5eebcb69-880d-4d6a-af09-890707b737f6" class="block-color-gray_background">空闲块链表法</p><p id="eb261895-b637-4bff-ab0c-2fc987da4ff8" class="block-color-gray_background">空闲块链表法是指在磁盘上维护多个空闲块链表，每个链表存储相同大小的空闲块。当需要分配空间时，就从对应大小的空闲块链表中取出一个块分配给用户。当用户释放空间时，就将该块加入对应大小的空闲块链表中。这种方法的优点是分配和释放空间的效率高，但是需要维护多个空闲块链表，占用一定的存储空间。</p><p id="e86fe195-248e-471f-bea4-e32b4f5e57db" class="block-color-gray_background">成组链接法</p><p id="d89a841b-3dc1-4877-82e3-fe0bc2c14655" class="block-color-gray_background">成组链接法被用来管理文件存储空间。在UNIX系统中，每100个空闲块为一组，一组物理块被组合成为一个块组，每个块组都有一个超级块，其中包含了块组中所有块的信息，如块的数量、块的大小、块的位图等。当需要分配空间时，就在超级块中查找一个块组，如果该块组有足够的空间，就从中取出一个块分配给用户。当用户释放空间时，就将该块标记为空闲，并将其添加到块组的空闲块链表中。成组链接法的优点是可以高效地分配和释放空间，但是需要维护超级块和块组的信息，因此需要额外的存储空间。</p><h3 id="8fb49ef4-9b74-42ad-a527-59faed70ab62" class="">文件的使用</h3><p id="b87c739d-dcda-46e6-9eed-fede1aa2f591" class="">在文件的使用中，系统调用指令是用于管理文件的重要工具。以下是一些常见的系统调用指令：</p><ul id="54cc323c-cd7e-424b-804f-4863050c94a1" class="bulleted-list"><li style="list-style-type:disc"><code>open()</code>：用于打开文件，可以指定文件名、访问模式等参数。</li></ul><ul id="70d84031-f5ff-4238-9596-d16f903dcbb5" class="bulleted-list"><li style="list-style-type:disc"><code>close()</code>：用于关闭文件，释放文件描述符等资源。</li></ul><ul id="e2e9bfa7-3409-4910-94df-5f2a0bfa0438" class="bulleted-list"><li style="list-style-type:disc"><code>read()</code>：用于从文件中读取数据。</li></ul><ul id="f283059c-68e7-4a86-8a98-ee630883a907" class="bulleted-list"><li style="list-style-type:disc"><code>write()</code>：用于将数据写入文件。</li></ul><ul id="a81a9155-c412-4a85-987f-e958f9829a2b" class="bulleted-list"><li style="list-style-type:disc"><code>lseek()</code>：用于在文件中定位，可以移动文件指针到指定位置。</li></ul><ul id="210439d9-b397-4218-a2f1-21ed792a5daa" class="bulleted-list"><li style="list-style-type:disc"><code>unlink()</code>：用于删除文件。</li></ul><ul id="235c07f1-feae-42de-845e-038c1e9fac20" class="bulleted-list"><li style="list-style-type:disc"><code>chmod()</code>：用于修改文件的权限和所有权。</li></ul><ul id="3b361d81-2780-4a01-863d-18e551951a9b" class="bulleted-list"><li style="list-style-type:disc"><code>stat()</code>：用于获取文件的状态信息。</li></ul><p id="30ac743c-bbbf-45d6-add5-9232e6d99c2e" class="">这些系统调用指令可以在程序中调用，以实现对文件的读取、写入、修改、删除等操作。</p><h3 id="5f57ef13-4585-41f4-a601-0847e634514b" class="">文件的共享和保护 </h3><p id="ebd84499-1092-4b8a-9d6e-3d52b6fc6521" class="block-color-gray_background">文件的共享和保护是文件管理的重要方面之一。共享可以让多个用户在不同的时间和地点访问同一文件，从而提高工作效率和协作效果。保护可以保护文件的机密性、完整性和可用性，防止未经授权的访问、篡改和破坏。</p><p id="e41748e5-5e6b-4f18-818d-342b9855999e" class="block-color-gray_background">文件的共享可以分为两种类型：共享锁定和独占锁定。共享锁定允许多个用户同时读取同一文件，但是不允许任何用户写入文件。独占锁定则只允许一个用户读取或写入文件，其他用户不能访问该文件。</p><p id="56d66b2c-10eb-43ca-b149-dd39cf4a99e0" class="block-color-gray_background">共享锁定通常用于协作编辑、审阅和查看文件等场景，例如多个用户共同编辑一个文档、多个用户查看同一份报告等。独占锁定通常用于保护文件的机密性和完整性，例如保密文件、数据库文件等。</p><p id="75df097a-fe8b-4d34-bc00-c3b27783670a" class="block-color-gray_background">文件的保护可以通过文件权限和访问控制来实现。文件权限指的是对文件的读、写、执行等操作进行限制，只有具有相应权限的用户才能进行相应的操作。访问控制则是指对用户进行身份认证和授权，只有经过认证和授权的用户才能访问文件。</p><p id="7ddb6ab4-02f8-4477-bce3-b09ac3e6b2a9" class="block-color-gray_background">文件的保护还可以通过加密和备份来实现。加密可以将文件的内容转换为密文，防止未经授权的访问和泄露。备份则可以将文件的副本保存在其他地方，以防止原始文件的丢失或损坏。</p><p id="ddd7803c-165d-4be9-ab5b-2d88393bdbb7" class="block-color-gray_background">在文件的共享和保护中，需要注意以下几点：</p><ul id="924cc7a9-9728-4d8a-9926-67abf17fe9c5" class="block-color-gray_background bulleted-list"><li style="list-style-type:disc">共享和保护需要根据实际需求进行选择和使用，避免过度共享和保护。</li></ul><ul id="fc74c7af-b321-406f-8336-b2cd057ebdc1" class="block-color-gray_background bulleted-list"><li style="list-style-type:disc">共享和保护需要与文件的价值和敏感度相匹配，不同文件需要采用不同的共享和保护方式。</li></ul><ul id="cd3ed2fd-1a4d-42e3-9bb1-f87391246d84" class="block-color-gray_background bulleted-list"><li style="list-style-type:disc">共享和保护需要与系统的安全策略相符合，不得违反安全规定和法律法规。</li></ul><p id="1553a74b-d49c-4a7c-b5a6-c2362862c938" class="block-color-gray_background">通过合理的文件共享和保护，可以提高工作效率和信息安全性，为用户提供更加便捷和安全的文件管理体验。</p><p id="e42606f9-f4d4-465b-b469-de3feb47cee2" class="block-color-gray_background">文件的保护方式主要有存取控制矩阵、存取控制表、用户权限表、口令和密码。</p><h3 id="17938382-bb15-4a41-9170-432ad10bc328" class="">系统的安全和可靠性</h3><p id="aaaccda4-3d09-40d0-88af-236120ecbb28" class=""><strong>系统的安全机制</strong></p><p id="bb2425f1-37a0-4ce3-967e-014a30991244" class="">系统级、用户级、目录级、文件级</p><p id="93555d21-6902-4082-a6b6-ea5b0b00d375" class=""><strong>文件系统的可靠性</strong></p><p id="884b7412-46ab-4351-9f0d-19ad1619ad8c" class=""><mark class="highlight-gray_background">文件系统的可靠性是指文件系统在面对各种异常情况时，如断电、崩溃、磁盘故障等情况下，能够恢复数据的能力。为了保证文件系统的可靠性，需要采用以下措施：</mark></p><p id="14b6aded-145f-4d34-8aff-d5f07e1b5ae3" class=""><mark class="highlight-gray_background">数据备份：定期对文件系统进行备份，以防止数据的丢失或损坏。</mark></p><p id="885a1996-43cb-4e08-8854-d4cdc62c84af" class=""><mark class="highlight-gray_background">磁盘阵列：通过磁盘阵列技术，将多块硬盘组合成一个逻辑磁盘，提高数据的冗余性和可靠性。</mark></p><p id="d03ea5c8-bb97-4e7d-bd77-00bdf910bee6" class=""><mark class="highlight-gray_background">日志文件：在文件系统中添加日志文件，记录文件系统的操作和状态信息，以便在异常情况下进行数据恢复。</mark></p><p id="bbb0000e-5b82-4fe8-b8d9-8199d11ad9a9" class=""><mark class="highlight-gray_background">文件系统检查：定期对文件系统进行检查和修复，以排除潜在的问题和错误。</mark></p><p id="eeead547-0507-411e-8cde-a3dcf67a24b4" class=""><mark class="highlight-gray_background">权限管理：通过文件权限和访问控制等机制，防止未经授权的访问和篡改。</mark></p><p id="0be79869-a0b7-403c-9564-23072ff82090" class=""><mark class="highlight-gray_background">通过上述措施，可以提高文件系统的可靠性和安全性，保证数据的完整性和可用性。</mark></p><h3 id="163f87a2-abee-4642-8ae7-6af0a7883ac8" class="">作业管理</h3><p id="7e1cc51e-a875-495d-81ee-b3922036a31a" class=""><strong>作业管理</strong></p><p id="cf06398b-15e5-42fc-89a0-1e3a69f9f9a9" class="block-color-gray_background">作业管理是操作系统中的一个重要组成部分，用于控制和调度进程的执行顺序和资源分配。作业管理包括作业的提交、作业的分配和调度、作业的执行和结束等过程。</p><p id="86e03f7d-dde6-4696-8cfa-a1644a7f1eb1" class=""><strong>作业控制</strong></p><p id="4484d7bb-a08e-46a9-ab52-0ef4906886f0" class="">联机和脱机两种控制方式</p><p id="76ee76ce-52ae-447a-bd5b-9958d3581c45" class="">作业的状态和转换</p><figure id="3e710896-995b-4c96-8a73-b3b828c77f70"><div class="source"><a href="https://ts1.cn.mm.bing.net/th/id/R-C.a25c5f78209ca05a13c9723cc0848b64?rik=J5alZuaa6l1aww&amp;riu=http://www.educity.cn/article_images/2017-07-27/9422474e-310e-4845-8fc3-9a2e8f9096d3.png&amp;ehk=OZm75KQuOW479UpEmbX4cLfNiZtS3h5cv7BPHZR6Ne4=&amp;risl=&amp;pid=ImgRaw&amp;r=0">https://ts1.cn.mm.bing.net/th/id/R-C.a25c5f78209ca05a13c9723cc0848b64?rik=J5alZuaa6l1aww&amp;riu=http://www.educity.cn/article_images/2017-07-27/9422474e-310e-4845-8fc3-9a2e8f9096d3.png&amp;ehk=OZm75KQuOW479UpEmbX4cLfNiZtS3h5cv7BPHZR6Ne4=&amp;risl=&amp;pid=ImgRaw&amp;r=0</a></div></figure><p id="7a2eff1a-41e8-4395-9a6f-ffe31948503d" class=""><strong>作业调度</strong></p><p id="cc080568-281d-4615-9e74-888e416175dd" class=""><mark class="highlight-gray_background">单道批量处理是一种作业调度方式，也称为批处理系统，它是早期计算机系统中常用的一种方式。在单道批量处理系统中，每次只有一个作业在系统中运行，系统在完成当前作业后，再加载下一个作业并运行。这种方式适合处理大批量的相似作业，可以提高处理效率和资源利用率。</mark></p><p id="5295f696-f3c7-45b2-8311-c578e50d57e1" class=""><mark class="highlight-gray_background">除了单道批量处理方式，还有多道批量处理方式、交互式处理方式等作业调度方式。多道批量处理方式允许多个作业同时进入系统并并行执行，提高系统的并发性和吞吐量；交互式处理方式则允许用户与计算机系统进行实时交互，提高用户的体验和效率。</mark></p><p id="4f91f79a-8812-42d8-a4ba-e6832941db99" class=""><mark class="highlight-gray_background">不同的作业调度方式适用于不同的场景和需求，需要根据实际情况进行选择和使用。通过合理的作业调度方式，可以提高操作系统的效率和性能，优化资源的利用和分配，为用户提供更加高效和便捷的操作系统服务。</mark></p><p id="414a58b2-8691-480a-b4fa-e1252d35c22f" class=""><mark class="highlight-purple">单道批量处理，采用三种算法</mark></p><p id="ec6d8a71-86b3-407c-90be-f896aaecb2aa" class="block-color-gray_background">先来先服务、短作业优先、相应比高者优先</p><p id="3d630a8b-8116-4bfe-b276-e62b6dacb35f" class="block-color-gray_background">相应比 Rp=作业相应时间作业执行时间</p><p id="b47a54e9-91e9-49df-9825-cbfae6db193f" class="block-color-gray_background">作业响应时间=等候时间与执行时间之和</p><p id="2b58862f-b139-43f8-b724-08cb9b41b709" class=""><strong>作业调度算法性能的衡量指标：平均周转时间和平均周转次数</strong></p><p id="e27b2e99-2565-4060-a709-478c6a50d4b0" class="">以下为一个例题</p><figure id="1a7da9a2-e02a-43ca-a0bc-c1a3731b7879" class="image"><a href="%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86(git)%20e2e12d6547a64fcf9342c9e4620e2a95/111.jpg"><img style="width:768px" src="%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86(git)%20e2e12d6547a64fcf9342c9e4620e2a95/111.jpg"/></a></figure><p id="43bddcb3-6ff6-4c62-a564-494c4f5cd460" class="">
</p><figure id="48565b9a-a0bd-4ed5-9060-590579abdc63" class="image"><a href="%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86(git)%20e2e12d6547a64fcf9342c9e4620e2a95/%25E5%25BE%25AE%25E4%25BF%25A1%25E5%259B%25BE%25E7%2589%2587_20230415221404.jpg"><img style="width:4096px" src="%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86(git)%20e2e12d6547a64fcf9342c9e4620e2a95/%25E5%25BE%25AE%25E4%25BF%25A1%25E5%259B%25BE%25E7%2589%2587_20230415221404.jpg"/></a></figure><figure id="f9d5c889-b079-4c8d-8078-f05fab899127" class="image" style="text-align:center"><a href="%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86(git)%20e2e12d6547a64fcf9342c9e4620e2a95/%25E5%25BE%25AE%25E4%25BF%25A1%25E5%259B%25BE%25E7%2589%2587_20230415221210.jpg"><img style="width:384px" src="%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86(git)%20e2e12d6547a64fcf9342c9e4620e2a95/%25E5%25BE%25AE%25E4%25BF%25A1%25E5%259B%25BE%25E7%2589%2587_20230415221210.jpg"/></a></figure></div></article></body></html>